# Maintainer: Kyle Keen <keenerd@gmail.com>

# cms2 had a manpage, where did it go?
# need to hack up the pythonpath and get the tests to run

pkgname=cryptominisat5
pkgver=5.11.4
pkgrel=3
pkgdesc="A modern, multi-threaded, feature-rich, simplifying SAT solver"
arch=('loong64' 'x86_64')
#url="https://www.msoos.org/2016/07/cryptominisat-5-0-0-released/"
url="https://github.com/msoos/cryptominisat/"
license=('MIT')
depends=('zlib' 'gcc-libs' 'boost-libs' 'sqlite' 'm4ri')
makedepends=('python' 'boost' 'cmake' 'vim' 'help2man' 'python-setuptools')
# vim for xxd
optdepends=('python: python module')
source=("cms5-$pkgver.tgz::https://github.com/msoos/cryptominisat/archive/$pkgver.tar.gz")
sha256sums=('abeecb29a73e8566ae6e9afd229ec991d95b138985565b2378af95ef1ce1d317')

# many fancy features requiring makedeps
# python3, m4ri, valgrind

prepare() {
  cd cryptominisat-$pkgver
  sed -i 's/\(CRYPTOMINISAT4_EXECUTABLE\).*/\1 cryptominisat5\)/' *.cmake.in
}

build() {
  cd cryptominisat-$pkgver
  mkdir -p build
  cd build
  # options to play with:
  # -DUSE_ZLIB -DNOM4RI -DNOBOSPHORUS -DNOVALGRIND -DNOBREAKID -DENABLE_PYTHON_INTERFACE
  # -DEMSCRIPTEN -DFEEDBACKFUZZ -DLARGEMEM -DEXTFEAT -DSANITIZE -DMIT -DENABLE_ASSERTIONS
  # -DUSE_GAUSS -DONLY_SIMPLE -DENABLE_TESTING -DCOVERAGE -DIPASIR -DMANPAGE
  # -DSTATS -DWEIGHTED_SAMPLING -DFINAL_PREDICTOR -DFINAL_PREDICTOR_BRANCH
  cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
  make

  cd ..
  python3 setup.py build
}

check() {
  cd cryptominisat-$pkgver
  _pythonpath=`echo build/lib.*`
  PYTHONPATH="$PWD/$_pythonpath" python3 python/tests/test_pycryptosat.py
}

package() {
  cd cryptominisat-$pkgver
  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  cd build
  make install DESTDIR="$pkgdir"
  # todo, tweak the build tools to respect DESTDIR
  cd ..
  python3 setup.py install --record files.txt --root="${pkgdir}"
  # Remove stray source files
  rm -r "$pkgdir"/usr/lib/python*/site-packages/{msvc,oracle,picosat}
  # Fix man install dir
  mv "$pkgdir"/usr/{man,share}
}
